package wasolicitudesfiec.logicacontrol.SolicitarAyudantes;

import web.util.Constantes;
import entidad.ayudantias.Solicitudayudantia;
import entidad.ayudantias.Solicitudserayudante;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.FacesContext;
import wasolicitudesfiec.Ayudantias.SolicitarAyudantes.HistorialSolicitarAyudantes;
import wasolicitudesfiec.general.MensajeException;
import wasolicitudesfiec.logicacontrol.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import wasolicitudesfiec.registros.Rg_CandidatoAyudante;

/**
 *
 * @author kabad
 */
public class CTRL_HistorialSolicitarAyudantes extends CTRL_Base {

    private HistorialSolicitarAyudantes gui;
    LogicaHistorial logicaHistorial;

    public CTRL_HistorialSolicitarAyudantes(HistorialSolicitarAyudantes gui, FacesContext facesContext) {
        super(facesContext);
        this.gui = gui;
        String instancia;
        instancia = (String) externalContext.getRequestParameterMap().get("instancia");
        if (instancia != null) {
            externalContext.getSessionMap().put("instancia", instancia);
        }
    }

    public String getNombreInstanciaProceso() {
        String instancia;
        instancia = (String) externalContext.getSessionMap().get("instancia");
        return instancia;
    }

    public void inicializar() throws MensajeException {
        logicaHistorial = new LogicaHistorial();
        ArrayList<Rg_CandidatoAyudante> listaRg_CandidatoAyudante = new ArrayList<Rg_CandidatoAyudante>();
        try {
            String actividad = externalContext.getRequestParameterMap().get("actividad");
            int idNodo = Integer.parseInt(externalContext.getRequestParameterMap().get("idNodo"));
            int idSolicitud = new Integer(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.idSolicitudActividad));
            Solicitudayudantia solicitud = logica.getLogAyudantia().leerSolicitudayudantiaNivel2(idSolicitud);
            int idSolicitudProceso = solicitud.getFkParent();
            gui.getMenu().setTitulo("Actividad: " + actividad);
            Solicitudayudantia solicitudCompleta = null;
            //leersolicitudes ayudantes
            if (Constantes.SolicitarAyudantes.revisarInformeSeleccion.equals(actividad) || Constantes.SolicitarAyudantes.imprimirContratos.equals(actividad)) {
                solicitudCompleta = logica.getLogAyudantia().leerSolicitudayudantiaNivel4(idSolicitudProceso);
            } else {
                solicitudCompleta = logica.getLogAyudantia().leerSolicitudayudantiaNivel4(idSolicitud);
            }

            Rg_CandidatoAyudante rg_CandidatoAyudante;
            if (solicitudCompleta.getListaSolicitudserayudante() != null) {
                for (Solicitudserayudante object : solicitudCompleta.getListaSolicitudserayudante()) {

                    rg_CandidatoAyudante = new Rg_CandidatoAyudante();
                    rg_CandidatoAyudante.setSolicitudserayudante(object);
                    rg_CandidatoAyudante.setSeleccionado(object.getSeleccionado());
                    rg_CandidatoAyudante.setNombreInstancia(solicitud.getNombreinstanciaproceso());
                    if (Constantes.SolicitarAyudantes.imprimirContratos.equals(actividad) &&
                            object.getSeleccionado()) {
                        String path = Constantes.Rutas.rutaArchivos +
                                "/" + "Archivos" + "/" + "Solicitar Ser Ayudante" + "/" + object.getNombreinstanciaproceso() + "/" + object.getNombreinstanciaproceso() + ".pdf";
                        rg_CandidatoAyudante.setPathContrato(path.replaceAll(" ", "%20"));
                        listaRg_CandidatoAyudante.add(rg_CandidatoAyudante);
                    }
                    if (!Constantes.SolicitarAyudantes.imprimirContratos.equals(actividad)) {
                        listaRg_CandidatoAyudante.add(rg_CandidatoAyudante);
                    }
                }
                gui.getDp_AyudantesSeleccionados().setListaRg_CandidatoAyudante(listaRg_CandidatoAyudante);
                gui.getDp_AyudantesContratados().setListaRg_CandidatoAyudante(listaRg_CandidatoAyudante);
            }
            if (Constantes.SolicitarAyudantes.solicitarAyudantes.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(true);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.revisarSolicitud.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(true);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.volverASolicitar.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(true);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.configurarConvocatoria.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(true);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.registroEstudiantes.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(true);
                gui.getPanelTabladePostulantes().setRendered(true);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.enviarConvocatoria.equals(actividad) || Constantes.SolicitarAyudantes.enviarNotificacionEstudiantesSeleccionados.equals(actividad) || Constantes.SolicitarAyudantes.esperarConfirmacion.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(true);
                if (Constantes.SolicitarAyudantes.enviarConvocatoria.equals(actividad)) {
                    gui.getTextoMensajesSistema().setText("Actividad del Sistema: La convocatoria para la ayudantía ha sido enviado vía correo elctrónico a todos los estudiantes.");
                }
                if (Constantes.SolicitarAyudantes.enviarNotificacionEstudiantesSeleccionados.equals(actividad)) {
                    gui.getTextoMensajesSistema().setText("Actividad del Sistema: Los estudiantes seleccionados han sido notificados vía correo elctrónico.");
                }
                if (Constantes.SolicitarAyudantes.esperarConfirmacion.equals(actividad)) {
                    gui.getTextoMensajesSistema().setText("Actividad del Sistema: El proceso está en espera de las respuestas de los estudiantes seleccionados.");
                    gui.getPanelTabladePostulantes().setRendered(true);
                }

            } else if ((Constantes.SolicitarAyudantes.seleccionarAyudantes.equals(actividad))) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(true);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionSeleccionAyudantes).equals(Constantes.Atributo.DecisionSeleccionAyudantes.ExtenderConvocatoria.toString())) {
                    gui.getLblFecha1().setText("Nueva Fecha límite recepción de solicitudes: ");
                    gui.getFechaMaxConfirmacion().setText(solicitud.getFechaMaxRegistro());
                }
                if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionSeleccionAyudantes).equals(Constantes.Atributo.DecisionSeleccionAyudantes.SeleccionarAyudantes.toString())) {
                    gui.getLblFecha1().setText("Fecha límite recepción de respuestas de estudiantes seleccionados: ");
                    gui.getFechaMaxConfirmacion().setText(solicitud.getFechaMaxConfimacion());
                }
            } else if (Constantes.SolicitarAyudantes.revisarResultados.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(true);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
                if (logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionRevision).equals(Constantes.Atributo.Decision.Prorrogar.toString())) {
                    gui.getLblFecha2().setText("Nueva Fecha límite recepción de respuestas de estudiantes seleccionados: ");
                    gui.getFechaMaxConfirmacion2().setText(solicitud.getFechaMaxConfimacion());
                }

            } else if (Constantes.SolicitarAyudantes.revisarInformeSeleccion.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(true);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(true);
                gui.getPanelMensajesSistema().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(false);
            } else if (Constantes.SolicitarAyudantes.imprimirContratos.equals(actividad)) {
                gui.getPanelsolicitarAyudantes().setRendered(false);
                gui.getPanelRevisarSolicitud().setRendered(false);
                gui.getPanelvolveraSolicitar().setRendered(false);
                gui.getPanelDatosConvocatoria().setRendered(false);
                gui.getPanelRegistroEstudiantes().setRendered(false);
                gui.getPanelTabladePostulantes().setRendered(false);
                gui.getPanelSeleccionarAyudantes().setRendered(false);
                gui.getPanelAnalizarResultados().setRendered(false);
                gui.getPanelContratarAyudantes().setRendered(false);
                gui.getPanelMensajesSistema().setRendered(false);
                gui.getPanelImprimirContratos().setRendered(true);
            }
            if (solicitud.getFkiddecano() != 0) {
                gui.getLblDecano().setText(solicitud.getDecano().getPersona().toString());
                gui.getLblDecano1().setText(solicitud.getDecano().getPersona().toString());
            }
            if (solicitud.getFechamodificacion() != null) {
                gui.getLblFecha().setText(solicitud.getFechamodificacion());
            }
            if (solicitud.getFkIdProfesor() != 0) {
                gui.getSolicitante().setText(solicitud.getProfesor().getPersona().toString());
                gui.getLblSolicitante1().setText(solicitud.getProfesor().getPersona().toString());
            }
            if (solicitud.getFkIdMateria() != 0) {
                gui.getTipoAyudantia().setText("académica de la materia ");
                gui.getNombreAyudantia().setText(solicitud.getMateria().getNombre());
            }
            if (solicitud.getFkIdAyudantiaVaria() != 0) {
                gui.getTipoAyudantia().setText("de la actividad varia ");
                gui.getNombreAyudantia().setText(solicitud.getAyudantiavaria().getNombre());
            }
            if (solicitud.getActividadarealizar() != null) {
                gui.getActividad().setValue(solicitud.getActividadarealizar());
            }
            if (solicitud.getHorasAyudantias() != 0) {
                gui.getHorasSolicitadas().setText(solicitud.getHorasAyudantias());
            }
            if (solicitud.getFechainicioayudantia() != null) {
                gui.getFechaInicio().setText(solicitud.getFechainicioayudantia());
            }
            if (solicitud.getFechafinayudantia() != null) {
                gui.getFechaFin().setText(solicitud.getFechafinayudantia());
            }

            gui.getLanzarConvocatoria().setText("Contenido de la Convocatoria enviada a los estudiantes:");
            gui.setTextoConvocatoria(logica.getLogAyudantia().generarConvocatoria(solicitud));
            if ((solicitud.getMensajeParaDecano() == null) || solicitud.getMensajeParaDecano().equals("")) {
                gui.getComentarioProfesor().setValue(Constantes.Mensajes.noComentarios);
            } else {
                gui.getComentarioProfesor().setValue(solicitud.getMensajeParaDecano());
            }
            gui.getEvaluacionDecano().setText(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionRevision) + " la solicitud.");
            gui.getLblDecisionVolverASolicitar().setText(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionVolverASolicitar) + " la solicitud.");
            if ((solicitud.getObservacionEvaluador() == null) || solicitud.getObservacionEvaluador().equals("")) {
                gui.getComentarioDecano().setValue(Constantes.Mensajes.noComentarios);
            } else {
                gui.getComentarioDecano().setValue(solicitud.getObservacionEvaluador());
            }
            gui.getDecisionSeleccion().setText(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionSeleccionAyudantes));
            gui.getResultadoAnalisis().setText(logicaHistorial.leerPropiedadporActividad(idNodo, Constantes.Atributo.decisionEvaluacion));
        } catch (Exception ex) {
            ex.printStackTrace();
            Logger.getLogger(CTRL_HistorialSolicitarAyudantes.class.getName()).log(Level.SEVERE, null, ex);
            throw new MensajeException(Constantes.Mensajes.noMuestra);
        }
    }
}
